home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible (2nd Edition) / OpenGL SuperBible e2.iso / tools / GLUT-3.7 / LIB / MUI / BUTTON.C < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-12  |  16.5 KB  |  509 lines

  1. /*
  2.  * Copyright (c) 1993-1997, Silicon Graphics, Inc.
  3.  * ALL RIGHTS RESERVED 
  4.  * Permission to use, copy, modify, and distribute this software for 
  5.  * any purpose and without fee is hereby granted, provided that the above
  6.  * copyright notice appear in all copies and that both the copyright notice
  7.  * and this permission notice appear in supporting documentation, and that 
  8.  * the name of Silicon Graphics, Inc. not be used in advertising
  9.  * or publicity pertaining to distribution of the software without specific,
  10.  * written prior permission. 
  11.  *
  12.  * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
  13.  * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
  14.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
  15.  * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
  16.  * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
  17.  * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
  18.  * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
  19.  * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
  20.  * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
  21.  * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
  22.  * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
  23.  * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
  24.  * 
  25.  * US Government Users Restricted Rights 
  26.  * Use, duplication, or disclosure by the Government is subject to
  27.  * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
  28.  * (c)(1)(ii) of the Rights in Technical Data and Computer Software
  29.  * clause at DFARS 252.227-7013 and/or in similar or successor
  30.  * clauses in the FAR or the DOD or NASA FAR Supplement.
  31.  * Unpublished-- rights reserved under the copyright laws of the
  32.  * United States.  Contractor/manufacturer is Silicon Graphics,
  33.  * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
  34.  *
  35.  * OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
  36.  */
  37.  
  38. #include <GL/glut.h>
  39. #include <mui/gizmo.h>
  40. #include <mui/displaylist.h>
  41. #include <mui/uicolor.h>
  42.  
  43. void muiLinkButtons(muiObject *obj1, muiObject *obj2)
  44. {
  45.     Button *b1, *b2, *tmp;
  46.     
  47.     if ((obj1->type != MUI_RADIOBUTTON || obj2->type != MUI_RADIOBUTTON) &&
  48.         (obj1->type != MUI_TINYRADIOBUTTON || obj2->type != MUI_TINYRADIOBUTTON)) {
  49.     muiError("muiLinkButtons: attempt to link non radio buttons");
  50.     }
  51.     b1 = (Button *)obj1->object;
  52.     b2 = (Button *)obj2->object;
  53.     if (b1->link == 0 && b2->link == 0) {
  54.     b1->link = b2;
  55.     b2->link = b1;
  56.     return;
  57.     }
  58.     if (b1->link == 0) {
  59.     b1->link = b2->link;
  60.     b2->link = b1;
  61.     return;
  62.     }
  63.     if (b2->link == 0) {
  64.     b2->link = b1->link;
  65.     b1->link = b2;
  66.     return;
  67.     }
  68.     tmp = b1->link;
  69.     b1->link = b2->link;
  70.     b2->link = tmp;
  71.     return;
  72. }
  73.  
  74. void     muiClearRadio(muiObject *rad)
  75. {
  76.     Button *b1, *b2;
  77.     b2 = b1 = (Button *)rad->object;
  78.     muiSetActive(b1->object, 0);
  79.     if (b1->link == 0) return;
  80.     b1 = b1->link;
  81.     while (b1 != b2) {
  82.     muiSetActive(b1->object, 0);
  83.     b1 = b1->link;
  84.     }
  85. }
  86.  
  87.  
  88. static void    drawbuttonlabel(muiObject *obj)
  89. {
  90.     int xmin, ymin;
  91.     Button *b = (Button *)obj->object;
  92.  
  93.     if (!b->str)
  94.     return;
  95.  
  96.     switch (obj->type) {
  97. /*
  98.     case TINYTOGGLE:
  99.         xmin = obj->xmin+16;
  100.         ymin = obj->ymin+4;
  101.         break;
  102.     case GENERICBUTTON:
  103.         xmin = obj->xmin+ (obj->xmax - obj->xmin - strwidth(obj->str))/2 + 1;
  104.         ymin = obj->ymin+9;
  105.         break;
  106.     case PUSHBUTTON:
  107.         if (getdefaultbut(b)) {
  108.             xmin = obj->xmin+ (obj->xmax - 15 - obj->xmin - strwidth(obj->str))/2 + 1;
  109.             ymin = obj->ymin+9;
  110.         } else {
  111.             xmin = obj->xmin+ (obj->xmax - obj->xmin - strwidth(obj->str))/2 + 1;
  112.             ymin = obj->ymin+9;
  113.         }
  114.         break;
  115.         case BED:
  116.         xmin = obj->xmin+ (obj->xmax - obj->xmin - strwidth(obj->str))/2 + 1;
  117.         ymin = obj->ymin+8;
  118.         break;
  119.     case CHECKBUTTON:
  120.         xmin = obj->xmin+27;
  121.         ymin = obj->ymin+6;
  122.         break;
  123. */
  124.     case MUI_TINYRADIOBUTTON:
  125.         xmin = obj->xmin+19;
  126.         ymin = obj->ymin+4;
  127.         break;
  128.     case MUI_RADIOBUTTON:
  129.         xmin = obj->xmin+30;
  130.         ymin = obj->ymin+8;
  131.         break;
  132. /*
  133.     case INDICATOR:
  134.         xmin = obj->xmin+20;
  135.         ymin = obj->ymin+8;
  136.         break;
  137. */
  138.         default:
  139.         xmin = obj->xmin+20;
  140.         ymin = obj->ymin+9;
  141.         break;
  142.     }
  143.     {
  144.         if (muiGetEnable(obj))
  145.             uiBlack();
  146.         else
  147.         uiDkGray();
  148.     uicmov2i(xmin, ymin);
  149.     uicharstr(b->str, UI_FONT_NORMAL);
  150.  
  151.     }
  152. }
  153.  
  154. void    drawradiobutton(muiObject *obj)
  155. {
  156.     int xmin = obj->xmin, xmax = obj->xmax, ymin = obj->ymin, ymax = obj->ymax;
  157.  
  158.     if (!muiGetVisible(obj)) {
  159. /*
  160.         int sl = 0;
  161.         font(BUTTONFONT1);
  162.     if (b->str) sl = strwidth(b->str);
  163.     backgrounddraw(b->xmin,b->ymin,b->xmin+30+sl,b->ymax);
  164. */
  165.     return;
  166.     }
  167.  
  168.     if (muiGetEnable(obj)) {
  169.         if (obj->locate) {
  170.             if (obj->select) {
  171.         if (obj->active) {
  172.             uiDkGray();
  173.                         uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); 
  174.             uipdr2i(xmin+10,ymax); 
  175.                         uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13);                             uipdr2i(xmax,ymin+10); 
  176.                         uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos();
  177.     
  178.             uiVyLtGray();
  179.                         uipmv2i(xmin+1,ymin+11); uipdr2i(xmin+1,ymin+13); 
  180.                     uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); 
  181.                     uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+11); 
  182.                         uipdr2i(xmin+13,ymin+2); uipdr2i(xmin+10,ymin+2); 
  183.             uipclos();
  184.     
  185.             uiWhite();
  186.                         uimove2i(xmin+1,ymin+12);  uidraw2i(xmin+11,ymax-1);  
  187.                         uidraw2i(xmin+12,ymax-1);  uidraw2i(xmax-1,ymin+12);
  188.             uiendline();
  189.                         uimove2i(xmin+1,ymin+13);  uidraw2i(xmin+10,ymax-1);  
  190.                         uidraw2i(xmin+13,ymax-1);  uidraw2i(xmax-1,ymin+13);
  191.             uiendline();
  192.  
  193.         } else {
  194.  
  195.             uiDkGray();
  196.                         uimove2i(xmin,ymin+13);   uidraw2i(xmin+10,ymax);  
  197.                         uidraw2i(xmin+13,ymax);   uidraw2i(xmax,ymin+13);
  198.             uiendline();
  199.                         uimove2i(xmin,ymin+12);   uidraw2i(xmin+10,ymax-1);  
  200.                         uidraw2i(xmin+13,ymax-1); uidraw2i(xmax,ymin+12);
  201.             uiendline();
  202.  
  203.                 uiLtGray();
  204.                         uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1);  
  205.                         uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12);
  206.             uiendline();
  207.  
  208.             uiWhite();
  209.                         uimove2i(xmin+2,ymin+12); uidraw2i(xmin+11,ymax-2);  
  210.                         uidraw2i(xmin+12,ymax-2); uidraw2i(xmax-2,ymin+12);
  211.             uiendline();
  212.                         uimove2i(xmin+3,ymin+12); uidraw2i(xmin+11,ymax-3);  
  213.                         uidraw2i(xmin+12,ymax-3); uidraw2i(xmax-3,ymin+12);
  214.             uiendline();
  215.  
  216.             uiVyLtGray();
  217.                         uipmv2i(xmin+4,ymin+12); uipdr2i(xmin+11,ymax-4); 
  218.                     uipdr2i(xmin+12,ymax-4); uipdr2i(xmax-4,ymin+12); 
  219.                     uipdr2i(xmin+12,ymin+5); uipdr2i(xmin+11,ymin+5);
  220.                 uipclos();
  221.  
  222.             uiLtGray();
  223.                         uimove2i(xmin+3,ymin+11);  uidraw2i(xmin+11,ymin+3);  
  224.                         uidraw2i(xmin+12,ymin+3);  uidraw2i(xmax-3,ymin+11);
  225.             uiendline();
  226.                         uimove2i(xmin+4,ymin+11);  uidraw2i(xmin+11,ymin+4);  
  227.                         uidraw2i(xmin+12,ymin+4);  uidraw2i(xmax-4,ymin+11);
  228.             uiendline();
  229.  
  230.             uiBlack();
  231.                         uimove2i(xmin+2,ymin+11);  uidraw2i(xmin+11,ymin+2);  
  232.                         uidraw2i(xmin+12,ymin+2);  uidraw2i(xmax-2,ymin+11);
  233.             uiendline();
  234.  
  235.             uiWhite();
  236.                         uimove2i(xmin,ymin+10);  uidraw2i(xmin+10,ymin);  
  237.                         uidraw2i(xmin+13,ymin);  uidraw2i(xmax,ymin+10);
  238.             uiendline();
  239.                         uimove2i(xmin,ymin+11);  uidraw2i(xmin+10,ymin+1);  
  240.                         uidraw2i(xmin+13,ymin+1);uidraw2i(xmax,ymin+11);
  241.             uiendline();
  242.                         uimove2i(xmin+1,ymin+11);uidraw2i(xmin+10,ymin+2);  
  243.                         uimove2i(xmin+13,ymin+2);uidraw2i(xmax-1,ymin+11);
  244.             uiendline();  
  245.         }
  246.  
  247.         } else {        /* not selected */
  248.  
  249.         if (obj->active) {
  250.  
  251.             uiDkGray();
  252.                         uimove2i(xmin,ymin+13);   uidraw2i(xmin+10,ymax);  
  253.                         uidraw2i(xmin+13,ymax);   uidraw2i(xmax,ymin+13);
  254.             uiendline();
  255.                         uimove2i(xmin,ymin+12);   uidraw2i(xmin+10,ymax-1);  
  256.                         uidraw2i(xmin+13,ymax-1); uidraw2i(xmax,ymin+12);
  257.             uiendline();
  258.  
  259.                 uiLtGray();
  260.                         uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1);  
  261.                         uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12);
  262.             uiendline();
  263.  
  264.             uiWhite();
  265.                         uimove2i(xmin+2,ymin+12); uidraw2i(xmin+11,ymax-2);  
  266.                         uidraw2i(xmin+12,ymax-2); uidraw2i(xmax-2,ymin+12);
  267.             uiendline();
  268.                         uimove2i(xmin+3,ymin+12); uidraw2i(xmin+11,ymax-3);  
  269.                         uidraw2i(xmin+12,ymax-3); uidraw2i(xmax-3,ymin+12);
  270.             uiendline();
  271.  
  272.             uiVyLtGray();
  273.                         uipmv2i(xmin+4,ymin+12); uipdr2i(xmin+11,ymax-4); 
  274.                     uipdr2i(xmin+12,ymax-4); uipdr2i(xmax-4,ymin+12); 
  275.                     uipdr2i(xmin+12,ymin+5); uipdr2i(xmin+11,ymin+5);
  276.                 uipclos();
  277.  
  278.             uiLtGray();
  279.                         uimove2i(xmin+3,ymin+11);  uidraw2i(xmin+11,ymin+3);  
  280.                         uidraw2i(xmin+12,ymin+3);  uidraw2i(xmax-3,ymin+11);
  281.             uiendline();
  282.                         uimove2i(xmin+4,ymin+11);  uidraw2i(xmin+11,ymin+4);  
  283.                         uidraw2i(xmin+12,ymin+4);  uidraw2i(xmax-4,ymin+11);
  284.             uiendline();
  285.  
  286.             uiBlack();
  287.                         uimove2i(xmin+2,ymin+11);  uidraw2i(xmin+11,ymin+2);  
  288.                         uidraw2i(xmin+12,ymin+2);  uidraw2i(xmax-2,ymin+11);
  289.             uiendline();
  290.  
  291.             uiWhite();
  292.                         uimove2i(xmin,ymin+10);  uidraw2i(xmin+10,ymin);  
  293.                         uidraw2i(xmin+13,ymin);  uidraw2i(xmax,ymin+10);
  294.             uiendline();
  295.                         uimove2i(xmin,ymin+11);  uidraw2i(xmin+10,ymin+1);  
  296.                         uidraw2i(xmin+13,ymin+1);uidraw2i(xmax,ymin+11);
  297.             uiendline();
  298.                         uimove2i(xmin+1,ymin+11);uidraw2i(xmin+10,ymin+2);  
  299.                         uimove2i(xmin+13,ymin+2);uidraw2i(xmax-1,ymin+11); 
  300.             uiendline(); 
  301.  
  302.         } else {    /* not active */
  303.  
  304.             uiDkGray();
  305.                         uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); 
  306.             uipdr2i(xmin+10,ymax); 
  307.                         uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13);                             uipdr2i(xmax,ymin+10); 
  308.                         uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos();
  309.     
  310.             uiVyLtGray();
  311.                         uipmv2i(xmin+1,ymin+11); uipdr2i(xmin+1,ymin+13); 
  312.                     uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); 
  313.                     uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+11); 
  314.                         uipdr2i(xmin+13,ymin+2); uipdr2i(xmin+10,ymin+2); 
  315.             uipclos();
  316.     
  317.             uiWhite();
  318.                         uimove2i(xmin+1,ymin+12);  uidraw2i(xmin+11,ymax-1);  
  319.                         uidraw2i(xmin+12,ymax-1);  uidraw2i(xmax-1,ymin+12);
  320.             uiendline();
  321.                         uimove2i(xmin+1,ymin+13);  uidraw2i(xmin+10,ymax-1);  
  322.                         uidraw2i(xmin+13,ymax-1);  uidraw2i(xmax-1,ymin+13);
  323.             uiendline();
  324.         }
  325.         }
  326.  
  327.     } else {    /* not located */
  328.  
  329.         if (obj->active) {
  330.  
  331.         uiDkGray();
  332.                     uimove2i(xmin,ymin+13);   uidraw2i(xmin+10,ymax);  
  333.                     uidraw2i(xmin+13,ymax);   uidraw2i(xmax,ymin+13);
  334.             uiendline();
  335.                     uimove2i(xmin,ymin+12);   uidraw2i(xmin+10,ymax-1);  
  336.                     uidraw2i(xmin+13,ymax-1); uidraw2i(xmax,ymin+12);
  337.             uiendline();
  338.  
  339.             uiLtGray();
  340.                     uimove2i(xmin+1,ymin+12); uidraw2i(xmin+11,ymax-1);  
  341.                     uidraw2i(xmin+12,ymax-1); uidraw2i(xmax-1,ymin+12);
  342.             uiendline();
  343.  
  344.         uiWhite();
  345.                     uimove2i(xmin+2,ymin+12); uidraw2i(xmin+11,ymax-2);  
  346.                     uidraw2i(xmin+12,ymax-2); uidraw2i(xmax-2,ymin+12);
  347.             uiendline();
  348.                     uimove2i(xmin+3,ymin+12); uidraw2i(xmin+11,ymax-3);  
  349.                     uidraw2i(xmin+12,ymax-3); uidraw2i(xmax-3,ymin+12);
  350.             uiendline();
  351.  
  352.         uiLtGray();
  353.                     uipmv2i(xmin+4,ymin+12); uipdr2i(xmin+11,ymax-4); 
  354.                 uipdr2i(xmin+12,ymax-4); uipdr2i(xmax-4,ymin+12); 
  355.                 uipdr2i(xmin+12,ymin+5); uipdr2i(xmin+11,ymin+5); uipclos();
  356.  
  357.         uiLtGray();
  358.                     uimove2i(xmin+3,ymin+11);  uidraw2i(xmin+11,ymin+3);  
  359.                     uidraw2i(xmin+12,ymin+3);  uidraw2i(xmax-3,ymin+11);
  360.             uiendline();
  361.                     uimove2i(xmin+4,ymin+11);  uidraw2i(xmin+11,ymin+4);  
  362.                     uidraw2i(xmin+12,ymin+4);  uidraw2i(xmax-4,ymin+11);
  363.             uiendline();
  364.  
  365.         uiBlack();
  366.                     uimove2i(xmin+2,ymin+11);  uidraw2i(xmin+11,ymin+2);  
  367.                     uidraw2i(xmin+12,ymin+2);  uidraw2i(xmax-2,ymin+11);
  368.             uiendline();
  369.  
  370.         uiWhite();
  371.                     uimove2i(xmin,ymin+10);  uidraw2i(xmin+10,ymin);  
  372.                     uidraw2i(xmin+13,ymin);  uidraw2i(xmax,ymin+10);
  373.             uiendline();
  374.                     uimove2i(xmin,ymin+11);  uidraw2i(xmin+10,ymin+1);  
  375.                     uidraw2i(xmin+13,ymin+1);uidraw2i(xmax,ymin+11);
  376.             uiendline();
  377.                     uimove2i(xmin+1,ymin+11);uidraw2i(xmin+10,ymin+2);  
  378.                     uimove2i(xmin+13,ymin+2);uidraw2i(xmax-1,ymin+11); 
  379.             uiendline(); 
  380.  
  381.         } else {
  382.  
  383.             uiDkGray();
  384.                     uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); 
  385.             uipdr2i(xmin+10,ymax);
  386.                     uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13); 
  387.             uipdr2i(xmax,ymin+10);
  388.                     uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos();
  389.     
  390.             uiLtGray();
  391.                   uipmv2i(xmin+1,ymin+11); uipdr2i(xmin+1,ymin+13); 
  392.               uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); 
  393.               uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+11); 
  394.                   uipdr2i(xmin+13,ymin+2); uipdr2i(xmin+10,ymin+2); uipclos();
  395.     
  396.             uiWhite();
  397.                   uimove2i(xmin+1,ymin+12);  uidraw2i(xmin+11,ymax-1);  
  398.                   uidraw2i(xmin+12,ymax-1);  uidraw2i(xmax-1,ymin+12);
  399.           uiendline();
  400.         }
  401.     }
  402.  
  403.     } else {        /* not enabled */
  404.     uiDkGray();
  405.             uipmv2i(xmin,ymin+10); uipdr2i(xmin,ymin+13); uipdr2i(xmin+10,ymax); 
  406.             uipdr2i(xmin+13,ymax); uipdr2i(xmax,ymin+13); uipdr2i(xmax,ymin+10); 
  407.             uipdr2i(xmin+13,ymin); uipdr2i(xmin+10,ymin); uipclos();
  408.  
  409.     uiLtGray();
  410.             uipmv2i(xmin+1,ymin+10); uipdr2i(xmin+1,ymin+13); 
  411.         uipdr2i(xmin+10,ymax-1); uipdr2i(xmin+13,ymax-1); 
  412.         uipdr2i(xmax-1,ymin+13); uipdr2i(xmax-1,ymin+10); 
  413.             uipdr2i(xmin+13,ymin+1); uipdr2i(xmin+10,ymin+1); uipclos();
  414.     }
  415.  
  416.     if (obj->active) {
  417.     if (muiGetEnable(obj)) {
  418.         uiSlateBlue();
  419.                    uipmv2i(xmin+12,ymax-5); uipdr2i(xmax-6,ymin+13); 
  420.             uipdr2i(xmax-8,ymin+13); uipdr2i(xmin+12,ymax-7); uipclos();
  421.  
  422.         uiBlue();
  423.                    uipmv2i(xmin+12,ymax-8); uipdr2i(xmax-9,ymin+13); 
  424.             uipdr2i(xmax-9,ymin+12); uipdr2i(xmin+12,ymin+10); uipclos();
  425.  
  426.         uiBlack();
  427.                    uipmv2i(xmin+12,ymin+9); uipdr2i(xmin+15,ymin+12); 
  428.             uipdr2i(xmax-6,ymin+12); uipdr2i(xmin+13,ymin+8); 
  429.             uipdr2i(xmin+12,ymin+8); uipclos();
  430.  
  431.         uiDkGray();
  432.                 uimove2i(xmin+13,ymin+7);  uidraw2i(xmax-5,ymin+12);  
  433.         uiendline();
  434.     } else {
  435.         uiSlateBlue();
  436.                    uipmv2i(xmin+12,ymax-5); uipdr2i(xmax-6,ymin+13); 
  437.             uipdr2i(xmax-6,ymin+12); uipdr2i(xmin+13,ymin+8); 
  438.             uipdr2i(xmin+12,ymin+8); uipclos();
  439.  
  440.         uiBlack();
  441.                 uimove2i(xmin+13,ymin+7);  uidraw2i(xmax-5,ymin+12);  
  442.         uiendline();
  443.     }
  444.     }
  445.     drawbuttonlabel(obj);
  446. }
  447.  
  448. void    drawtinyradio(muiObject *obj)
  449. {
  450.     int xmin = obj->xmin, xmax = obj->xmax,
  451.      ymin = obj->ymin, ymax = obj->ymax;
  452.     int sxmin = obj->xmin+4, sxmax = obj->xmin+13, sxmid = obj->xmin+8,
  453.      symin = obj->ymin+3, symax = obj->ymin+12, symid = obj->ymin+7;
  454.  
  455.     if (!muiGetVisible(obj)) {
  456.     backgrounddraw(obj->xmin,obj->ymin,obj->xmax,obj->ymax);
  457.     return;
  458.     }
  459.  
  460.     if (muiGetEnable(obj) && obj->locate) {
  461.     if (obj->select) {
  462.             drawedges(xmin++,xmax--,ymin++,ymax--,uiBlack,uiWhite);
  463.             drawedges(xmin++,xmax--,ymin++,ymax--,uiDkGray,uiBlack);
  464.             drawedges(xmin++,xmax--,ymin++,ymax--,uiWhite,uiMmGray);
  465.  
  466.             uiVyLtGray();
  467.                 uirectfi(xmin,ymin,xmax,ymax);
  468.     } else {
  469.             uiWhite();
  470.                 uirectfi(xmin,ymin,xmax,ymax);
  471.     }
  472.     } else {
  473.         uiBackground();
  474.             uirectfi(xmin,ymin,xmax,ymax);
  475.     }
  476.  
  477.     
  478.     uiBlack(); 
  479.         uipmv2i(sxmin, symid); uipdr2i(sxmin++, symid+1); 
  480.     uipdr2i(sxmid, symax); uipdr2i(sxmid+1, symax--); uipdr2i(sxmax, symid+1);
  481.         uipclos();
  482.     
  483.     uiLtGray(); 
  484.         uipmv2i(sxmax--, symid); uipdr2i(sxmid+1, symin); 
  485.     uipdr2i(sxmid, symin++); uipdr2i(sxmin, symid-1);
  486.         uipclos();
  487.  
  488.     if (obj->active) {
  489.     if (!muiGetEnable(obj))
  490.         uiLtYellow();
  491.         else 
  492.         uiYellow();
  493.     } else {
  494.     if (!muiGetEnable(obj))
  495.         uiMmGray();
  496.     else if (obj->locate)
  497.         uiMmYellow();
  498.     else 
  499.         uiDkYellow();
  500.     }
  501.     uipmv2i(sxmin, symid); uipdr2i(sxmin, symid+1);
  502.     uipdr2i(sxmid, symax); uipdr2i(sxmid+1, symax); uipdr2i(sxmax, symid+1);
  503.     uipdr2i(sxmax, symid); uipdr2i(sxmid+1, symin); uipdr2i(sxmid, symin);
  504.     uipclos();
  505.  
  506.     drawbuttonlabel(obj);
  507. }
  508.  
  509.